package com.withyou.design_pattern.creative_design_pattern.singleton_design_pattern;

/**
 * 分类：
 *      创建型设计模式：用户创建单例对象,运行时环境对于目标类只会产生一个对象
 * 特点：
 *      饱汉设计模式：延迟创建对象（用的时候创建，避免对象膨胀），但需要解决多线程情况下的安全问题
 *      饱汉模式非线程安全的。
 *
 * 优缺点：
 *      好处：延时加载，用的时候才会生产对象。
 *      缺点：需要保证同步，付出效率的代价。
 *
 *　FullMan_StaticInnClass_Design_Pattern：饱汉设计模式
 *
 *  实现：静态内部类
 *
 *  原理：单例对象通过静态内部类包裹，使用的使用加载静态内部类，只会被加载一次，创建一个对象。
 */
public class FullMan_StaticInnClass_Design_Pattern {

    private FullMan_StaticInnClass_Design_Pattern(){}

    private static class FullMan_StaticInnClass_Design_Pattern_Hold{
        private static FullMan_StaticInnClass_Design_Pattern singleton = new FullMan_StaticInnClass_Design_Pattern();
    }

    public static FullMan_StaticInnClass_Design_Pattern getInstance(){
        return FullMan_StaticInnClass_Design_Pattern_Hold.singleton;
    }
}
